let delayTime = 10000;
// const {source} = require('./txt.js') //主线任务
// let sourceIndex = 0;
let title = null; //标题
let text = ''; //正文
console.show()
function init() {
    //打开应用
    try {
        if (app.launchPackage("cn.dahebao")) {
            sleep(delayTime); // 等待应用启动完成
            进入首页操作()
        }
    } catch (e) {
        toast('打开应用失败！')
    }
};



//进入首页操作
function 进入首页操作() {
    let r = 等待控件出现('等待进入首页...', 'ivLogo')
    sleep(delayTime);
    if (r) {
        id("ivAdd").findOne().click()
        sleep(delayTime);
        let r1 = 等待控件出现('等待发布文章页面...', 'txt_preview')
        if (r1) {
            发布文章页面()
        }
    }
};


function 发布文章页面() {
    生成标题()
};

function 生成标题() {
    // 调用ai(source[sourceIndex])
    调用ai('帮我创作一篇现代诗歌散文，直接生成结果，标题不要出现任何符号')
    sleep(delayTime);
    id("edit_name").setText(title)
    sleep(delayTime);
    生成正文()
};

// 复制文本到剪贴板
function 复制文本到剪贴板(text) {
    // 获取剪贴板管理器
    const clipboard = context.getSystemService(android.content.Context.CLIPBOARD_SERVICE);
    // 创建 ClipData 对象
    const clipData = android.content.ClipData.newPlainText("label", text);
    // 设置剪贴板内容
    clipboard.setPrimaryClip(clipData);
    console.log("已将文本复制到剪贴板：" + text);
}

// 从剪贴板获取文本
function 从剪贴板获取文本() {
    // 获取剪贴板管理器
    const clipboard = context.getSystemService(android.content.Context.CLIPBOARD_SERVICE);
    // 获取剪贴板内容
    if (clipboard.hasPrimaryClip()) {
        const clipData = clipboard.getPrimaryClip();
        const item = clipData.getItemAt(0);
        const text = item.getText().toString();
        console.log("从剪贴板获取的文本：" + text);
        return text;
    } else {
        console.log("剪贴板为空");
        return null;
    }
}

function 生成正文() {
    sleep(delayTime);

    // 获取最外层的 WebView
    const webView = className("android.webkit.WebView").findOne();
    if (!webView) {
        console.log("未找到 WebView");
        return;
    }

    // 第一层子控件
    const layer1 = webView.child(0); // 假设输入框在第一层的第一个子控件
    if (!layer1) {
        console.log("未找到第一层子控件");
        return;
    }

    // 第二层子控件
    const layer2 = layer1.child(0); // 假设输入框在第二层的第一个子控件
    if (!layer2) {
        console.log("未找到第二层子控件");
        return;
    }

    // 第三层子控件
    const inputBox = layer2.child(0); // 假设输入框在第三层的第一个子控件
    if (!inputBox) {
        console.log("未找到输入框");
        return;
    }

    console.log("准备点击输入框");
    sleep(delayTime);
    // 点击输入框
    const bounds = inputBox.bounds();
    const x = bounds.centerX();
    const y = bounds.centerY();
    click(x, y);
    
    console.log("准备模拟粘贴操作");
    // 模拟粘贴操作
    sleep(delayTime);
    inputBox.performAction(android.view.accessibility.AccessibilityNodeInfo.ACTION_PASTE);

    // 如果粘贴无效，通过输入法粘贴
    // sleep(delayTime);
    // const clipboardText = 从剪贴板获取文本();
    // if (clipboardText) {
    //     setText(clipboardText);
    //     console.log("已通过输入法粘贴文本");
    // } else {
    //     console.log("剪贴板为空，无法粘贴");
    // }

    // 发布文章
    sleep(delayTime);
    id("txt_publish").click();
    console.log("已点击发布按钮");

    // 等待发布配置页面
    sleep(delayTime);
    let r = 等待控件出现('等待发布配置页面...', 'btn_save');
    if (r) {
        发布文章配置();
        console.log("已发布文章配置");
    } else {
        console.log("未找到发布配置页面");
    }
}

//发布文章配置
function 发布文章配置() {
    sleep(delayTime);
    id("fenlei").findOne().click()
    sleep(delayTime);
    let r = 等待控件出现('等待打开分类...', 'tv_comment_number')
    if (r) {
        sleep(delayTime);
        var widget =className("android.widget.TextView").find();
        sleep(delayTime);
        if (widget.length > 0) {
            // 如果找到控件，点击它
            widget[5].click();
            toast("点击成功");
        }
    }
    // 找到所有 className 为 "android.widget.CompoundButton" 的控件
    var widgets = className("android.widget.CompoundButton").find();
    sleep(delayTime);
    if (widgets.length > 0) {
        sleep(delayTime);
        // 点击第一个控件
        widgets[0].click();
        toast("点击了第一个控件");
        sleep(delayTime);
        // 点击第二个控件
        widgets[1].click();
        toast("点击了第二个控件");
    } else {
        toast("未找到符合条件的控件");
    }
    sleep(delayTime);
    id("btn_publish").findOne().click()
    sleep(delayTime);
    进入首页操作()
};


//范围点击
function 范围点击(bounds) {
    const centerX = (bounds[0] + bounds[2]) / 2; // 计算中心点 X 坐标
    const centerY = (bounds[1] + bounds[3]) / 2; // 计算中心点 Y 坐标
    click(centerX, centerY); // 点击中心点
};
//调用ai
function 调用ai(content) {
    var dpsk_api_key = "sk-906c9c52e47f412f8067a5a148e6956b"
    var dpsk_base_url = "https://api.deepseek.com/v1/chat/completions"
    headers = {
        "Authorization": "Bearer " + dpsk_api_key,
        "Content-Type": "application/json"
    }
    data = {
        "model": "deepseek-chat",
        "messages": [
            { "role": "system", "content": "You are a helpful assistant." },
            { "role": "user", "content": `${content}` }
        ],
        "stream": false,
        "temperature": 1.5,
    }

    let response = http.postJson(dpsk_base_url, data, {
        headers: headers
    }
    );

    // 处理响应
    if (response.statusCode == 200) {
        console.log('调用成功')
        var result = response.body.json();
        // log("API调用成功，返回结果：");
        // log(result["choices"][0]["message"]["content"]);
        sleep(delayTime);
        const poem = result["choices"][0]["message"]["content"]
        // 提取标题并去掉符号
        title = poem
            .split('\n')[0] // 取第一行
            .replace(/##|《|》/g, '') // 去掉 ##、《、》
            .trim(); // 去除前后空格

        // 提取剩余的诗文内容
        text = poem
            .split('\n')
            .slice(1) // 去掉第一行（标题）
            .filter(line => line.trim() !== '') // 去掉空行
            .join('\n'); // 拼接成字符串
            console.log('返回结果')
               // 将文本复制到剪贴板
    复制文本到剪贴板(text);
        // sourceIndex++
    } else {
        while (true) {
            sleep(delayTime);
            toast("API调用失败，状态码：" + response.statusCode)
            sleep(delayTime);
            toast("响应内容：" + response.body.string())
        }
    }
};
//调用ai生成正文
// 调用接口生成文章
function 生成育儿文章(content) {
    var dpsk_api_key = "sk-906c9c52e47f412f8067a5a148e6956b"
    var dpsk_base_url = "https://api.deepseek.com/v1/chat/completions"
    headers = {
        "Authorization": "Bearer " + dpsk_api_key,
        "Content-Type": "application/json"
    }
    data = {
        "model": "deepseek-chat",
        "messages": [
            { "role": "system", "content": "You are a helpful assistant." },
            { "role": "user", "content": `${content}` }
        ],
        "stream": false,
        max_tokens: 100,
    }

    let response = http.postJson(dpsk_base_url, data, {
        headers: headers
    }
    );

    // 处理响应
    if (response.statusCode == 200) {
        var result = response.body.json();
        log("API调用成功，返回结果：");
        sleep(delayTime);
        text = result["choices"][0]["message"]["content"]
        console.log(text)
    } else {
        while (true) {
            sleep(delayTime);
            toast("API调用失败，状态码：" + response.statusCode)
            sleep(delayTime);
            toast("响应内容：" + response.body.string())
        }
    }
}










function 等待控件出现(controlName, controlId) {
    sleep(delayTime); // 初始延迟
    let startTime = Date.now();
    let timeout = 50000
    sleep(delayTime); // 初始延迟

    while (Date.now() - startTime < timeout) {
        let imgHeader = id(controlId).findOne(delayTime); // 查找控件
        toast(`等待控件 ${controlName} 出现...`);
        if (imgHeader) {
            toast("控件已出现，执行后续操作...");
            return true; // 找到控件，返回 true
        }
        sleep(delayTime); // 等待下次检查
    }

    toast("等待超时，控件未出现 准备重新启动");
    killApp('cn.dahebao')
    return false; // 超时未找到控件，返回 false
}


function killApp(appName) {
    //填写包名或app名称都可以
    var name = getPackageName(appName); //通过app名称获取包名
    if (!name) {
        //如果无法获取到包名，判断是否填写的就是包名
        if (getAppName(appName)) {
            name = appName; //如果填写的就是包名，将包名赋值给变量
        } else {
            return false;
        }
    }
    app.openAppSetting(name); //通过包名打开应用的详情页(设置页)
    text(app.getAppName(name)).waitFor(); //通过包名获取已安装的应用名称，判断是否已经跳转至该app的应用设置界面
    sleep(delayTime); //稍微休息一下，不然看不到运行过程，自己用时可以删除这行
    let is_sure = textMatches(/(.*强.*|.*停.*|.*结.*)/).visibleToUser().findOne(delayTime); //在app的应用设置界面找寻包含“强”，“停”，“结”，“行”的控件
    if (is_sure.enabled()) {
        //判断控件是否已启用（想要关闭的app是否运行）
        sleep(delayTime);
        is_sure.parent().click(); //结束应用的控件如果无法点击，需要在布局中找寻它的父控件，如果还无法点击，再上一级控件，本案例就是控件无法点击
        sleep(delayTime);
        is_sure.click();
        sleep(delayTime);
        textMatches(/(.*强.*|.*停.*|.*结.*)/).visibleToUser().findOne(delayTime);
        var n = textMatches(/(.*强.*|.*停.*|.*结.*)/).find();
        if (n.length > 1) {
            n[n.length - 1].click();
            n[n.length - 1].parent() && n[n.length - 1].parent().click();
        }
        sleep(delayTime);
        if (textMatches(/(.*确.*|.*定.*)/).visibleToUser().findOne(delayTime)) {
            textMatches(/(.*确.*|.*定.*)/).visibleToUser().findOne(delayTime).click();
        } else {
            var 确认 = textMatches(/(.*确.*|.*定.*|.*强.*)/).visibleToUser().findOne(delayTime);
            if (确认) {
                确认.click(); //需找包含“确”，“定”的控件
                sleep(delayTime);
                确认.parent().click();
            }
        }
        log(app.getAppName(name) + "应用已被关闭");
        sleep(delayTime);
        stopScript()
        sleep(delayTime);
        toast('开始重启脚本...')
        init();
        // back();
    } else {
        log(app.getAppName(name) + "应用不能被正常关闭或不在后台运行");
        back();
    }
}





init()



